The advent of logical partitions (“LPARs”) in UNIX servers enabled mid-range servers to provide a class of service previously provided only by mainframe systems. Mainframe computers traditionally used physical partitioning to construct multiple “system images” using separate discrete building blocks. UNIX servers, using logical partitions, permitted finer granularity and interchangeability of components across system images. In addition, the virtualization of input/output (“I/O”) devices across multiple partitions further enhanced logical partitioning functionality. Virtualization of I/O devices allows multiple logical partitions to share physical resources such as Ethernet adapters, disk adapters and so forth. Therefore, rather than dedicating these virtual I/O adapters to each logical partition, the adaptors are shared between partitions, where each LPAR uses only the I/O adaptors as needed.
Management of virtual I/O adapters requires a dedicated component acting on behalf of all resources. For example, a Virtual I/O server, or “VIO” server, may be created by forming a specialized LPAR dedicated to the task of possessing all shared I/O devices. The VIO server acts as a “virtual device” that fields input-output requests from all other LPARs. All of the shared I/O devices are physically attached to the VIO server. The IBM BladeCenter approaches virtual I/O management differently using a BladeCenter chassis that allows a virtual I/O to include fibre channel and Ethernet networking interface cards. While the BladeCenter does not rely on a dedicated LPAR to perform the virtualization, a dedicated processor is housed in the management blade of the chassis, that uses a dedicated VIO server to perform the virtualization.
Virtual I/O servers use software to seamlessly redirect input/output to an alternate device if a first device fails. By having access to multiple Ethernet adapters, for instance, the failure of any single physical adapter no longer deprives any given LPAR of Ethernet functionality. Instead, the VIO server provides the desired functionality to its client LPAR from another physical adapter.
The use of a central dedicated VIO server, however, puts all LPARs into a state of extreme dependence upon that single dedicated VIO server. For instance, if any failure mechanism, such as a processor problem or an operating system malfunction, manifests itself on the VIO server, all applications running on LPARs dependent upon that VIO server lose their ability to communicate through the I/O adaptors. In other words, the dedicated VIO server now becomes a single point of failure for all applications and LPARs using I/O adaptors.
One known solution to eliminate the single point-of-failure for a VIO server is to create redundant dedicated VIO LPARs. However, creation of redundant dedicated VIO LPARs unnecessarily consumes resources. For instance, each dedicated VIO LPAR requires processor and memory allocation, as well as disk space and other such resources, which would better be used running applications and performing direct value-added computations for users. Therefore, a need exists for a distributed VIO server that can operate across some or all of the application LPARs so that it is not subject to a single point of failure and that also does not duplicate computer resources.